﻿// 104 括号序列.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <stack>

using  namespace std;
/*
http://oj.daimayuan.top/course/7/problem/263

给定一个长度为 n的字符串 s，字符串由 (, ), [, ] 组成，
问 s是不是一个合法的括号序列。

合法的括号序列的定义是：
空串是一个合法的括号序列。
若 A 是一个合法的括号序列，则 (A), [A] 也是合法的括号序列。
若 A, B 都是合法的括号序列，则 AB 也是合法的括号序列。

输入格式
第一行一个整数 n。

接下来一行一个长度为 n 的字符串 s。

输出格式
如果 s是合法的括号序列，输出 Yes，否则输出 No。

样例输入1
10
[]([(())])
样例输出1
Yes
样例输入2
4
[(])
样例输出2
No
数据规模
对于所有数据，保证 1≤n≤100000。
*/

int n;
stack<char> st;
 


int main()
{
	cin >> n;

	for (int i = 0; i < n; i++) {
		char a; cin >> a;
		if (a == '(' || a == '[' || a == '{') {st.push(a);}
		else if (!st.empty() && a == ')' && st.top() == '(') {
			st.pop();
		}
		else if (!st.empty() && a == ')' && st.top() == '(') {st.pop();}
		else if (!st.empty() && a == ']' && st.top() == '[') { st.pop(); }
		else if (!st.empty() && a == '}' && st.top() == '{') { st.pop(); }
		else {
			cout << "No" << endl;  return 0;
		}
	}

	if (st.empty()) {
		cout << "Yes" << endl;
	}
	else {
		cout << "No" << endl;
	}

	return 0;
}

 